package tcpdemo1;

import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * Created by L.jp
 * Description:
 * User: 86189
 * Date: 2022-08-09
 * Time: 15:58
 */
/*TCP接收数据
接收数据的步骤
① 创建服务器端的Socket对象(ServerSocket)
② 获取输入流，读数据，并把数据显示在控制台
③ 释放资源
*/
/*
TCP接收数据接收数据的步骤
① 创建服务器端的Socket对象(ServerSocket)
ServerSocket(int port)
② 监听客户端连接，返回一个Socket对象
Socket accept()
③ 获取输入流，读数据，并把数据显示在控制台
InputStream getInputStream()
④ 释放资源
void close()
*/
public class ServerDemo {
    public static void main(String[] args) throws IOException {
        //创建服务器端的Socket对象(ServerSocket)
        //ServerSocket(int port) 创建绑定到指定端口的服务器套接字
        ServerSocket serverSocket=new ServerSocket(1000);
        
        //侦听要与此套接字建立的连接并接受它。该方法阻塞，直到建立连接。
        Socket socket= serverSocket.accept();
        //获取输入流，读数据，并把数据显示在控制台
        
        InputStream is= socket.getInputStream();
        /*从输入流中读取数据的下一个字节。值字节以int形式返回，范围0到255 。
        如果由于到达流的末尾而没有可用的字节，则返回值-1 。此方法会一直阻塞，
        直到输入数据可用、检测到流结束或引发异常*/
        int n;
        while ((n=is.read())!=-1){
            System.out.print((char)n);
        }
        
        is.close();
        serverSocket.close();
    }
}
